package w83b.w83bManager;


import java.util.List;

import org.apache.commons.lang.StringUtils;

import w83b.w83bBeans.W83bEmpresasBean;
import w83b.w83bBeans.W83bUsuarioXLNetsBean;
import w83b.w83bDAO.W83bFactoriaDAO;
import w83b.w83bDAO.w83bConstantesBD.W83bTipoEmpresaBD;
import w83b.w83bUtilidadesComunes.W83bClsConstantes;


public class W83bEmpresas implements W83bIEmpresas {
	public java.util.List buscarEmpresas(W83bEmpresasBean param) throws Exception{
		
		
		List listaEmpresas = W83bFactoriaDAO.getMantenimientosDAO().buscarEmpresas(param);
		
		return listaEmpresas;	
	}
	
	public W83bEmpresasBean detalleEmpresas(W83bEmpresasBean param) throws Exception{
		
		
		W83bEmpresasBean empresa = W83bFactoriaDAO.getMantenimientosDAO().detalleEmpresas(param);
		if(StringUtils.isNotEmpty((String)empresa.getBaja())){
			empresa.setBaja(W83bClsConstantes.BAJA);
		}
		else{empresa.setBaja(W83bClsConstantes.ALTA);}
		
		return empresa;	
	}

	public String anyadirEmpresas(W83bEmpresasBean param)
			throws Exception {
		
		String resultado = "0";
		
		if(StringUtils.isEmpty(param.getCodEmpresas())){
			String maxEmpresa = W83bFactoriaDAO.getMantenimientosDAO().maxCodEmpresa();		
			if(W83bTipoEmpresaBD.maxCodigo.equals(maxEmpresa)){
				boolean codEncontrado = false;
				if(Integer.parseInt(maxEmpresa)+1
						!=Integer.parseInt(W83bFactoriaDAO.getMantenimientosDAO().contarEmpresas())){
					while(!codEncontrado){
						maxEmpresa = String.valueOf(Integer.parseInt(maxEmpresa)-1);//NOPMD
						codEncontrado = !W83bFactoriaDAO.getMantenimientosDAO().existeEmpresa(maxEmpresa);
					}
					param.setCodEmpresas(maxEmpresa);
					resultado = param.getCodEmpresas();
					W83bFactoriaDAO.getMantenimientosDAO().anyadirEmpresas(param);		
				}else{
					resultado = "-1";
				}
			}else{				
				maxEmpresa = String.valueOf(Integer.parseInt(maxEmpresa)+1);//NOPMD
				param.setCodEmpresas(maxEmpresa);				
				W83bFactoriaDAO.getMantenimientosDAO().anyadirEmpresas(param);		
			}
		}else {
			if(!W83bFactoriaDAO.getMantenimientosDAO().existeEmpresa(param.getCodEmpresas())){	
				W83bFactoriaDAO.getMantenimientosDAO().anyadirEmpresas(param);		
			}else{
				resultado = "-2";				
			}
		}		
		
		return resultado;
	}
	
	public String modificarEmpresas(W83bEmpresasBean param)
	throws Exception {
		
		String resultado =  W83bFactoriaDAO.getMantenimientosDAO().modificarEmpresas(param);		
		
		return resultado;
	}
	public java.lang.String borrarEmpresas(java.util.ArrayList param) 
	throws Exception {
		
		W83bUsuarioXLNetsBean userBean = (W83bUsuarioXLNetsBean)param.get(param.size()-1);
		param.remove(param.size()-1);
		
		boolean resultado = false;	
		String resultadoTotal = "false";
		for(int i=0;i<param.size();i++){
			resultado = false;
			resultado =  W83bFactoriaDAO.getMantenimientosDAO().existeEmpresaConvenio((String)param.get(i));
			if(resultado){
				resultadoTotal = "true";
			}
			if(!resultado){
				W83bFactoriaDAO.getMantenimientosDAO().borrarEmpresas((String)param.get(i),userBean);
			}
		}
		
		
		return resultadoTotal;
	}
	
}